package com.ruoyi.hr.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.hr.domain.JUser;
import com.ruoyi.hr.domain.salaryCalculation.AttendDatas;
import com.ruoyi.hr.domain.salaryCalculation.SkypayGroups;
import com.ruoyi.hr.util.BaseResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface EmpSalaryCalculationService {

    /**
     * 获取所有薪资套类型
     * @return
     */
    List<SkypayGroups> findSkypayGroups(String urid);

    /**
     * 获取薪资人员信息
     * @param sql
     * @return
     */
    List<Map> findEmpSalaryInfoList(String sql);

    /**
     * 获取JSID
     * @param JSID
     * @return
     */
    String getJSID(String JSID);

    /**
     * 获取薪资套项目
     * @param pgid
     * @return
     */
    List<String> findObjType(String pgid);

    /**
     * 获取项目所有薪资套项目
     * @param pgid
     * @return
     */
    List<String> findObjTypeAll(String pgid);

    /**
     * 获取时间
     * @param pgid
     * @return
     */
    BaseResult findNewTerm(String pgid);

    /**
     * 初始化
     * @param sql
     */
    String Initialization(String sql);

    /**
     * 调用计算前存储过程
     * @param pgid
     */
    void skyPayGroupSubmitBefore(String pgid);

    /**
     * 调用冻结的存储过程
     * @param sql
     */
    void skyPayGroupFreeze(String sql);

    /**
     * 调用取消冻结的存储过程
     * @param sql
     */
    void skyPayGroupCancel(String sql);

    /**
     * 调用封账的存储过程
     * @param sql
     */
    void skyPayGroupClose(String sql);

    /**
     * 计算薪资套
     * @param sql
     */
    void skyPayGroupSubmitpgid(String sql);

    /**
     * 计算薪资套后
     * @param sql
     */
    void skyPayGroupSubmit(String sql);

    /**
     * 执行存储过程
     * @param sql
     */
    String executeProcedure(String sql);

    /**
     * 薪资流程
     * @param map
     * @return
     */
    String salaryProcess(Map map);

    /**
     * 获取考勤项目
     * @return
     */
    List<String> findKQ();

    /**
     * 获取应加应减项目
     * @param pgid
     * @return
     */
    List<String> findYJYK(String pgid);

    /**
     * 获取人员
     * @param jsid
     * @return
     */
    List<JUser> findWorking(String jsid);

    /**
     * 获取项目ID
     * @param objProList
     * @return
     */
    List<String> findObjsId(List<String> objProList);

    /**
     * 获取员工ID
     * @param badge
     * @return
     */
    String findWorkID(String badge);

    /**
     * 根据工号取出peid
     */
    String findPeidByBadge(String badge);

    /**
     * 删除本月存在数据的人员(考勤)
     * @param term
     * @param jsid
     * @return
     */
    int deleteAttend(String term,String jsid);

    /**
     * 删除本月存在数据的人员(应扣应减)
     * @param term
     * @param jsid
     * @return
     */
    int deleteADJUST(String term,String jsid);




    /**
     * 获取开始时间
     * @param jsid
     * @return
     */
    String findStartDate(String jsid);

    /**
     * 获取结束时间
     * @param jsid
     * @return
     */
    String findEndDate(String jsid);

    int insertObjsWorking(String StartDate,String endDate,List<AttendDatas> attendDatas);



    List<Map<String,Object>> findEmpByPgid(String pgid);

    /**
     * 下载考勤应加应扣模板
     */
    AjaxResult downloadTemplate(String type, String pgid);

    AjaxResult importData(MultipartFile file, boolean updateSupport, String pgid, String type);

    String findObjIdByTitle(String title);

    Map<String,Object> refreshButton(String pgid);

    /**
     * 导出薪资数据
     * @param pgid
     * @return
     */
    AjaxResult exportSalaryData(String pgid,List<Map> maps);
}
